from flask import Flask, session, g

import config
from exts import db, mail
from models import Usermodel
from blue_print.qa import bp as qa_bp
from blue_print.auth import bp as auth_bp
from flask_migrate import Migrate


app = Flask(__name__)


app.config.from_object(config)

db.init_app(app)
mail.init_app(app)

migrate = Migrate(app, db)


#注册蓝图
app.register_blueprint(qa_bp)
app.register_blueprint(auth_bp)


@app.before_request
def before_request():
    # 尝试从当前用户的会话中获取用户ID
    user_id = session.get('user_id')
    # 如果会话中存在用户ID，则进行下一步
    if user_id:
        # 使用ORM查询数据库，通过user_id查找对应的用户对象
        # 假设Usermodel是你的用户数据模型
        user = Usermodel.query.get(user_id)
        # 将找到的用户对象设置到全局对象g上，属性名为'user'
        # 这样在整个请求处理过程中，可以通过g.user访问到用户对象
        setattr(g, 'user', user)
    else:
        # 如果会话中没有用户ID，则设置g.user为None
        # 这样即使用户未登录，也能安全地访问g.user而不报错
        setattr(g, 'user', None)


@app.context_processor
def my_context_processor():
    return {'user': g.user}


if __name__ == '__main__':
    app.run()
